home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 90 / 090.d81 / starry night.src (.txt) < prev    next >
Encoding:
Commodore BASIC  |  1991-01-01  |  7.3 KB  |  420 lines

  1. 1 rem 'pal' assembler format source
  2. 2 rem setup to assemble object code to a disk file
  3. 10 open2,8,1,"@0:starry night"
  4. 20 sys700
  5. 30 .opt o2
  6. 40 v3 = $d40e
  7. 50 random = $d41b
  8. 60 table = $4000
  9. 70 *= $0801
  10. 80 .byte 11,8,10,0,158,50,48,54,49
  11. 90 .byte 0,0,0
  12. 95 lda #0
  13. 96 sta $d418
  14. 100 tsx
  15. 110 stx stkpntr
  16. 120 jsr randomon ;v3 activate
  17. 130 jsr setirq
  18. 140 start lda #55 ;--- ----
  19. 150 sta $01
  20. 160 lda #11
  21. 170 sta $d020
  22. 180 lda #0
  23. 190 sta irqflg
  24. 200 sta moveflg ;(stars
  25. 210 sta $d021
  26. 220 lda #21
  27. 230 sta $d018
  28. 240 lda #27
  29. 250 lda $d011
  30. 260 and #%11011111
  31. 270 sta $d011
  32. 280 sta $d011
  33. 290 ldx stkpntr
  34. 300 txs
  35. 310 jsr delay2
  36. 320 lda #$20
  37. 330 sta a2+2
  38. 340 jsr print
  39. 350 .asc "[147]_       [129]s t a r r y    n i g h t__"
  40. 390 .asc "   crsr up  increase number of stars_"
  41. 400 .asc "   crsr dn  decrease number of stars_"
  42. 410 .asc "_   [159]number of stars now set at @"
  43. 420 jsr savepos
  44. 430 jsr shownumb
  45. 440 jsr print :.byte 13,13
  46. 450 .asc "   f1  see stars normal_"
  47. 460 .asc "   f7  see stars changing positons_"
  48. 462 .asc "   q   quit to loadstar__"
  49. 470 .asc "   [159]while the stars are showing:__"
  50. 480 .asc "   crsr up  increase twinkle speed_"
  51. 490 .asc "   crsr dn  decrease twinkle speed_"
  52. 500 .asc "   return   returns to this screen__"
  53. 502 .asc "  [155]                                    [146]_"
  54. 503 .asc "        s t a r r y    n i g h t      [146]_"
  55. 504 .asc "            by john augustine         [146]_"
  56. 505 .asc "       v1.0 (c) by softdisk, inc.     [146]_"
  57. 506 .asc "      subscriptions: 1-800-831-2694   [146]_"
  58. 507 .asc "                                      [146]@"
  59. 510 kybd jsr inkey ;--- ---
  60. 515 cmp #"q"
  61. 517 bne *+5
  62. 518 jmp qw0
  63. 520 cmp #"[145]"
  64. 530 bne *+5
  65. 540 jmp crsrup
  66. 550 cmp #""
  67. 560 bne *+5
  68. 570 jmp crsrdn
  69. 580 cmp #133 ;f1
  70. 590 beq c6
  71. 600 cmp #136 ;f7
  72. 610 bne kybd
  73. 620 sta moveflg ;un0
  74. 630 c6 lda #54
  75. 640 sta $01 ;bas out
  76. 650 sta irqflg ;un0
  77. 660 ldx #0
  78. 670 stx onflg
  79. 680 lda #%00010000
  80. 690 a1 sta $0400,x ;blk&wht 'color'
  81. 700 sta $0500,x
  82. 710 sta $0600,x
  83. 720 sta $0700,x
  84. 730 inx
  85. 740 bne a1
  86. 750 lda $d011
  87. 760 ora #%00100000
  88. 770 sta $d011 ;bit map
  89. 780 lda #%00011000
  90. 790 sta $d018 ;pic data at $2000
  91. 800 ldx #0
  92. 810 txa
  93. 820 a2 sta $2000,x ;clr bitmap
  94. 830 inx
  95. 840 bne a2
  96. 850 inc a2+2
  97. 860 ldy a2+2
  98. 870 cpy #$40
  99. 880 bne a2
  100. 890 jsr setfb ;- - -stars on, one pass
  101. 900 a4 lda cntnumb
  102. 910 sta cntdwn
  103. 920 ldy #0
  104. 930 a6 lda #$20 ;$20xx (xx random
  105. 940 sta $fe
  106. 950 a5 lda random ;0 - 255
  107. 960 sta $fd
  108. 970 sta ($fb),y ;(for turnin off stars
  109. 980 jsr fbinc
  110. 990 lda seed ;(irq shifts on bit
  111. 1000 sta mask ;prevnt cng by irq
  112. 1010 eor #255 ;revrs bits
  113. 1020 sta ($fb),y
  114. 1030 jsr fbinc
  115. 1040 lda ($fd),y
  116. 1050 eor mask
  117. 1060 sta ($fd),y ;star on
  118. 1070 jsr delay2
  119. 1080 inc $fe ;nx pg (+256 bytes
  120. 1090 lda $fe
  121. 1100 cmp #$40
  122. 1110 bne a5
  123. 1120 dec cntdwn
  124. 1130 bne a6
  125. 1140 lda moveflg ;which star rtn
  126. 1150 beq c4
  127. 1160 jmp a8
  128. 1170 c4 lda cntnumb ;- - twinkle rtn -
  129. 1180 sta cntdwn
  130. 1190 jsr setfb
  131. 1200 ldy #0
  132. 1210 c3 lda #$20 ;- - -
  133. 1220 sta $41 ;$20xx (xx from table
  134. 1230 c5 lda ($fb),y ;turn off a star
  135. 1240 sta $40
  136. 1250 iny
  137. 1260 lda ($fb),y ;get off mask
  138. 1270 dey
  139. 1280 ldx onflg ;turn star on or off
  140. 1290 beq c1 ;turn it off
  141. 1300 eor #255
  142. 1310 ora ($40),y
  143. 1320 sta ($40),y ;star on agn
  144. 1330 bne c2 ;un
  145. 1340 c1 and ($40),y
  146. 1350 sta ($40),y ;star off
  147. 1360 c2 jsr fbinc
  148. 1370 jsr fbinc
  149. 1380 lda $02 ;(irq keybd
  150. 1390 cmp #13 ;abrt
  151. 1400 bne *+5
  152. 1410 jmp start
  153. 1420 jsr delay
  154. 1430 inc $41 ;nx pg
  155. 1440 lda $41
  156. 1450 cmp #$40 ;$4000 end of bitmap
  157. 1460 bne c5
  158. 1470 lda onflg
  159. 1480 eor #40
  160. 1490 sta onflg
  161. 1500 dec cntdwn
  162. 1510 bne c3
  163. 1520 beq c4
  164. 1530 a8 lda cntnumb ;------move & twnkl
  165. 1540 sta cntdwn
  166. 1550 jsr setfb
  167. 1560 ldy #0
  168. 1570 a7 lda #$20 ;- - -
  169. 1580 sta $41 ;$20xx bitmap
  170. 1590 sta $fe
  171. 1600 a9 lda ($fb),y ;turn off a star
  172. 1610 sta $40
  173. 1620 iny
  174. 1630 lda ($fb),y ;get off mask
  175. 1640 dey
  176. 1650 and ($40),y
  177. 1660 sta ($40),y ;star off
  178. 1670 lda random ;0 - 255
  179. 1680 sta $fd
  180. 1690 sta ($fb),y ;stars off nx pass
  181. 1700 jsr fbinc
  182. 1710 lda seed ;(irq shifts on bit
  183. 1720 sta mask ;prevnt cng by irq
  184. 1730 eor #255 ;revrs bits
  185. 1740 sta ($fb),y
  186. 1750 jsr fbinc
  187. 1760 lda ($fd),y
  188. 1770 eor mask
  189. 1780 sta ($fd),y
  190. 1790 lda $02 ;(irq keybd
  191. 1800 cmp #13 ;abrt
  192. 1810 bne *+5
  193. 1820 jmp start
  194. 1830 jsr delay
  195. 1840 inc $fe ;nx pg (+256 bytes
  196. 1850 inc $41 ;nx pg
  197. 1860 lda $fe
  198. 1870 cmp #$40
  199. 1880 bne a9
  200. 1890 dec cntdwn
  201. 1900 bne a7
  202. 1910 beq a8
  203. 1920 randomon lda #240 ;------
  204. 1930 sta v3+1
  205. 1940 lda #%10000001 ;noise/gate
  206. 1950 sta v3+4
  207. 1960 rts
  208. 1970 setfb lda #<table ;-------
  209. 1980 sta $fb
  210. 1990 lda #>table
  211. 2000 sta $fc
  212. 2010 rts
  213. 2020 fbinc inc $fb ;------
  214. 2030 bne *+4
  215. 2040 inc $fc
  216. 2050 rts
  217. 2060 setirq sei ;-------
  218. 2065 lda $0314
  219. 2066 sta intrrp
  220. 2067 lda $0315
  221. 2068 sta intrrp+1
  222. 2070 lda #<irq
  223. 2080 sta $0314
  224. 2090 lda #>irq
  225. 2100 sta $0315
  226. 2110 cli
  227. 2120 rts
  228. 2130 irq asl seed ;---------
  229. 2140 bcc *+7
  230. 2150 lda #1
  231. 2160 sta seed
  232. 2170 lda irqflg
  233. 2180 bne *+5
  234. 2190 jmp $ea31
  235. 2200 jsr keybrd
  236. 2210 jmp $ea7e ;lda dc0d,restor reg,rti
  237. 2220 delay ldy #254 ;------
  238. 2230 b1 ldx #0
  239. 2240 inx
  240. 2250 bne *-1
  241. 2260 iny
  242. 2270 bne b1
  243. 2280 rts
  244. 2290 delay2 ldy #254 ;----
  245. 2300 inx
  246. 2310 bne *-1
  247. 2320 iny
  248. 2330 bne *-4
  249. 2340 rts
  250. 2350 print pla ;-----------
  251. 2360 sta msg+1 ;lobyte
  252. 2370 pla
  253. 2380 sta msg+2 ;hibyte
  254. 2390 inc msg+1
  255. 2400 bne msg
  256. 2410 inc msg+2
  257. 2420 msg lda $ffff ;temp dummy addr
  258. 2430 beq ajj ;end flag
  259. 2440 cmp #"_"
  260. 2450 bne *+4
  261. 2460 lda #13
  262. 2470 cmp #"@" ;alt. end flag
  263. 2480 beq ajj
  264. 2490 jsr $ffd2
  265. 2500 inc msg+1
  266. 2510 bne msg
  267. 2520 inc msg+2
  268. 2530 jmp msg
  269. 2540 ajj lda msg+2
  270. 2550 pha
  271. 2560 lda msg+1
  272. 2570 pha
  273. 2580 rts
  274. 2590 inkey lda #0 ;------
  275. 2600 sta $c6
  276. 2610 jsr $ffe4
  277. 2620 beq *-3
  278. 2630 rts
  279. 2640 keybrd jsr $ea87 ;-----
  280. 2650 stx $02 ;incase 13/abort
  281. 2660 cpx #"[145]"
  282. 2670 bne *+5
  283. 2680 jmp speedup
  284. 2690 cpx #""
  285. 2700 bne *+5
  286. 2710 jmp slowdn
  287. 2720 rts
  288. 2730 speedup lda delay+1 ;---------
  289. 2740 cmp #255
  290. 2750 beq *+6
  291. 2760 inc delay+1
  292. 2770 rts
  293. 2780 lda b1+1 ;'delay
  294. 2790 cmp #255
  295. 2800 beq *+5
  296. 2810 inc b1+1
  297. 2820 rts
  298. 2830 slowdn lda b1+1 ;------
  299. 2840 beq *+6
  300. 2850 dec b1+1
  301. 2860 rts
  302. 2870 lda delay+1
  303. 2880 beq *+5
  304. 2890 dec delay+1
  305. 2900 rts
  306. 2910 savepos sec ;------
  307. 2920 jsr $fff0 ;plot
  308. 2930 stx xpos
  309. 2940 sty ypos
  310. 2950 rts
  311. 2960 crsrup lda cntnumb ;------
  312. 2970 clc
  313. 2980 adc #2
  314. 2990 bcs *+5
  315. 3000 sta cntnumb
  316. 3010 jsr shownumb
  317. 3020 jmp kybd
  318. 3030 crsrdn lda cntnumb ;------
  319. 3040 sec
  320. 3050 sbc #2
  321. 3060 bcc *+5
  322. 3070 sta cntnumb
  323. 3080 jsr shownumb
  324. 3090 jmp kybd
  325. 3100 shownumb ldx xpos ;--------
  326. 3110 ldy ypos
  327. 3120 clc
  328. 3130 jsr $fff0
  329. 3140 jsr print :.byte 5
  330. 3150 .asc "    [157][157][157][157]@"
  331. 3160 ldx cntnumb ;x 32 = # of stars
  332. 3170 lda #0
  333. 3180 sta result
  334. 3190 sta result+1
  335. 3200 a3 lda result ;- -
  336. 3210 clc
  337. 3220 adc #32
  338. 3230 sta result
  339. 3240 bcc *+5
  340. 3250 inc result+1
  341. 3260 dex
  342. 3270 bne a3
  343. 3280 lda result+1
  344. 3290 ldx result
  345. 3300 jmp $bdcd
  346. 3310 ;----- data ------
  347. 3320 irqflg .byte 0
  348. 3330 moveflg .byte 0
  349. 3340 stkpntr .byte 0
  350. 3350 seed .byte 1
  351. 3360 mask .byte 0
  352. 3370 result .word 0
  353. 3380 xpos .byte 0
  354. 3390 ypos .byte 0
  355. 3400 cntnumb .byte 5
  356. 3410 cntdwn .byte 0
  357. 3420 onflg .byte 0
  358. 5000 qw0 sei
  359. 5001 lda intrrp
  360. 5002 sta $0314
  361. 5003 lda intrrp+1
  362. 5004 sta $0315
  363. 5005 cli
  364. 5008 lda #30
  365. 5010 ldy #>name
  366. 5020 ldx #<name
  367. 5030 jsr $ffbd;           setnam
  368. 5040 lda #15;             file number
  369. 5050 ldx #8
  370. 5060 ldy #15
  371. 5070 jsr $ffba;           setlfs
  372. 5080 jsr $ffc0;           open
  373. 5090 ldx #15
  374. 5100 jsr $ffc6;           set for input
  375. 5110 jsr $ffcf;           get byte
  376. 5120 sta knp
  377. 5130 jsr $ffcf
  378. 5140 sta knp+1
  379. 5150 ldy #0
  380. 5160 qw1 jsr $ffcf
  381. 5170 iny
  382. 5180 cpy #32
  383. 5190 bne qw1
  384. 5200 lda #15
  385. 5210 jsr $ffc3;         close 15
  386. 5220 jsr $ffcc;         clear channels
  387. 5230 ldx #255
  388. 5240 lda knp
  389. 5250 cmp #"6"
  390. 5260 bne nope
  391. 5270 lda knp+1
  392. 5280 cmp #"3"
  393. 5290 bne nope
  394. 5300 lda 53281
  395. 5310 sta 646
  396. 5320 ldy #0
  397. 5330 qw2 lda dyn,y
  398. 5340 jsr $ffd2
  399. 5350 beq qw3
  400. 5360 iny
  401. 5370 bne qw2
  402. 5380 qw3 lda #13
  403. 5390 sta 631
  404. 5400 sta 632
  405. 5410 sta 633
  406. 5420 lda #3
  407. 5430 sta 198
  408. 5440 rts
  409. 5450 nope lda #147
  410. 5460 jsr $ffd2
  411. 5470 rts
  412. 5480 name .asc "r0:hello connect=hello connect":.byt 0
  413. 5490 knp .byt 0,0
  414. 5500 dyn .byt 147,17,17,17
  415. 5510 .asc "load":.byt 34:.asc "hello connect"
  416. 5520 .byt 34:.asc ",8":.byt 13,17,17,17,17
  417. 5530 .asc "run":.byt 19,17,0
  418. 5535 intrrp .byte 0,0
  419. 5540 .end
  420.